package com.cyt.work.question.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;
import com.cyt.work.question.model.po.Question;
import com.cyt.work.question.model.vo.QuestionVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;

/**
 * 问卷管理表 service接口
 *
 * @author concong tao
 * @since 2019-01-31
 */
public interface IQuestionService extends BaseService<Question> {

    /**
     * 分页查询
     * @param questionVo
     * @param pageSize
     * @param pageNum
     * @author congcong tao
     * @date 2019/7/11 9:12
     */
    ReturnResult page(QuestionVo questionVo, int pageSize, int pageNum);

    /**
     * 管理端查询进度
     * @param questionVo
     * @param pageSize
     * @param pageNum
     * @author congcong tao
     * @date 2019/9/2 10:12
     */
    ReturnResult pageManage(QuestionVo questionVo, int pageSize, int pageNum);

    /**
     * 用户接口端关联查询
     * @param questionVo
     * @param pageSize
     * @param pageNum
     * @author congcong tao
     * @date 2019/9/2 9:58
     */
    ReturnResult pageLeft(QuestionVo questionVo, int pageSize, int pageNum);

    /**
     * 查询最新的一条数据
     * @author congcong tao
     * @date 2019/7/11 10:29
     */
    Question selectFirstQuestion(String applyId);

    /**
     * 保存问卷及题目
     */
    ReturnResult saveQuestion(HttpServletRequest request, Question question, SysUser sysUser);

    /**
     * 更新问卷及题目
     */
    ReturnResult updateQuestion(HttpServletRequest request, Question question, SysUser sysUser);

    /**
     * 复制问卷
     * @param request
     * @param questionVo
     * @author congcong tao
     * @date 2019/9/4 9:45
     */
    ReturnResult copyQuestion(HttpServletRequest request, QuestionVo questionVo);

    /**
     * 获取问卷详情，包括题目及选项
     * @param id
     * @author congcong tao
     * @date 2019/7/8 10:30
     */
    Question getInfo(String id, String userId);

    /**
     * id用逗号区分
     * @param id
     * @author congcong tao
     * @date 2019/7/10 15:18
     */
    int deleteQuestion(String id);

    /**
     * 问卷按月统计
     *
     * @param questionVo 参数传入对象
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-08-21 14:18
     */
    ReturnResult statisticsByMonth(QuestionVo questionVo);

    /**
     * list 查询
     *
     * @param questionVo 参数传入对象
     * @return List<Question>
     * @author rong yuan
     * @date 2019-08-21 14:22
     */
    List<Question> listByExample(QuestionVo questionVo);

    /**
     * 查询问卷统计详情
     * @param id
     * @author congcong tao
     * @date 2019/8/21 15:25
     */
    Question getTotalInfo(String id);

    /**
     * 关闭当天结束的，开启第二天开始的
     * @author congcong tao
     * @date 2019/9/2 15:10
     */
    void updateStatusByTime();

    /**
     * 统计已答卷人员
     * @param questionVo
     * @author congcong tao
     * @date 2019/9/2 16:11
     */
    ReturnResult pageStatisticsUser(QuestionVo questionVo, int pageSize, int pageNum);

    /**
     * 导入
     * @param file
     * @param sysUser
     * @author congcong tao
     * @date 2019/9/3 13:47
     */
    ReturnResult importExcel(MultipartFile file, String applyId, SysUser sysUser);

    /**
     * 校验时间的准确性
     * @param startTime
     * @param endTime
     * @author congcong tao
     * @date 2019/9/7 7:53
     */
    ReturnResult checkTime(Date startTime, Date endTime);

    /**
     * 发布问卷
     * @param id
     * @param status
     * @param sysUser
     * @author congcong tao
     * @date 2019/9/9 17:59
     */
    ReturnResult updateStatus(String id, String status, SysUser sysUser);

    void exportUserScoreExcel(HttpServletResponse response, String questionId);

    void exportTotalExcel(HttpServletResponse response, String questionId);
}
